<!DOCTYPE HTML>
<html>
<head>
    <title>商品详情</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="stylesheet" type="text/css" href="/bootstrap/css/bootstrap.min.css"/>
    <script type="text/javascript" src="/js/jquery.min.js"></script>
    <script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="/jquery-validation/jquery.validate.min.js"></script>
    <script type="text/javascript" src="/jquery-validation/localization/messages_zh.min.js"></script>
    <script type="text/javascript" src="/layer/layer.js"></script>
    <script type="text/javascript" src="/js/md5.min.js"></script>
    <script type="text/javascript" src="/js/common.js"></script>
    <style type="text/css">
        html, body {
            height: 100%;
            width: 100%;
        }

        #goodsList td {
            border-top: 1px solid #39503f61;
        }
    </style>
</head>
<body>

<div class="panel panel-default" style="height:100%;background-color:rgba(222,222,222,0.8)">
    <div class="panel-heading">秒杀商品详情</div>
    <table class="table" id="goodsList">
        <tr>
            <td>商品名称</td>
            <td colspan="3" id="name"></td>
        </tr>
        <tr>
            <td>商品标题</td>
            <td colspan="3" id="title"></td>
        </tr>
        <tr>
            <td>商品图片</td>
            <td colspan="3"><img id="picture" width="200" height="200"/></td>
        </tr>
        <tr>
            <td>秒杀开始时间</td>
            <td id="startTime"></td>
            <td>
                <input type="hidden" id="remainSeconds"/>
                <span id="secKillTip"></span>
            </td>
            <td>
                <!--
                    <form id="miaoshaForm" method="post" action="/miaosha/do_miaosha">
                        <button class="btn btn-primary btn-block" type="submit" id="buyButton">立即秒杀</button>
                        <input type="hidden" name="goodsId"  id="goodsId" />
                    </form>-->
                <div class="row">
                    <div class="form-inline">
                        <img id="verifyCodeImg" width="80" height="32" style="display:none"
                             onclick="refreshVerifyCode()"/>
                        <input id="verifyCode" class="form-control" style="display:none"/>
                        <button class="btn btn-primary" type="button" id="buyButton" onclick="startKill()">立即秒杀
                        </button>
                    </div>
                </div>
                <input type="hidden" name="goodsId" id="goodsId"/>
            </td>
        </tr>
        <tr>
            <td>商品原价</td>
            <td colspan="3" id="price"></td>
        </tr>
        <tr>
            <td>秒杀价</td>
            <td colspan="3" id="discountPrice"></td>
        </tr>
        <tr>
            <td>库存数量</td>
            <td colspan="3" id="stock"></td>
        </tr>
    </table>
</div>
</body>
<script>
    $(function () {
        //countDown();
        getDetail();
    });


    function getKillResult(goodsId) {
        g_showLoading();
        $.ajax({
            url: "/api/kill/result",
            type: "GET",
            data: {
                goodsId: $("#goodsId").val(),
            },
            success: function (data) {
                if (data.code == 0) {
                    var result = data.data;
                    if (result < 0) {
                        layer.msg("对不起，秒杀失败");
                        //继续轮询
                    } else if (result == 0) {
                        setTimeout(function () {
                            getKillResult(goodsId);
                        }, 200);
                    } else {
                        layer.confirm("恭喜你，秒杀成功！查看订单？", {btn: ["确定", "取消"]},
                            function () {
                                window.location.href = "/order_detail.htm?orderId=" + result;
                            },
                            function () {
                                layer.closeAll();
                            });
                    }
                } else {
                    layer.msg(data.msg);
                }
            },
            error: function () {
                layer.msg("客户端请求有误");
            }
        });
    }

    function startKill() {
        var goodsId = $("#goodsId").val();
        g_showLoading();
        $.ajax({
            url: "/api/kill/path",
            type: "GET",
            data: {
                goodsId: goodsId,
                verifyCode: $("#verifyCode").val()
            },
            success: function (data) {
                if (data.code == 20000) {
                    var path = data.data;
                    doKill(path);
                } else {
                    layer.msg(data.msg);
                }
            },
            error: function () {
                layer.msg("客户端请求有误");
            }
        });
    }


    /**JSON.stringify(1)
     * 开始秒杀
     */
    function doKill(path) {
        $.ajax({
            url: "/api/" + path + "/kill",
            type: "POST",
            data: {
                goodsId: 1,
                userId: 2
            },
            success: function (data) {
                if (data.code == 20000) {
                    //window.location.href="/order_detail.htm?orderId="+data.data.id;
                    getKillResult($("#goodsId").val());
                } else {
                    layer.msg(data.msg);
                }
            },
            error: function () {
                layer.msg("客户端请求有误");
            }
        });

    }

    /**
     * 手动渲染页面
     * @param data
     */
    function render(data) {
        var secKillStatus = data.secKillStatus;
        var remainSeconds = data.remainSeconds;
        var user = data.user;
        if (user) {
            $("#userTip").hide();
        }
        $("#name").text(data.goodsName);
        $("#title").text(data.goodsTitle);
        $("#picture").attr("src", data.goodsPicture);
        $("#startTime").text(new Date(data.startTime).format("yyyy-MM-dd hh:mm:ss"));
        $("#remainSeconds").val(remainSeconds);
        $("#goodsId").val(data.goodsId);
        $("#price").text(data.goodsPrice);
        $("#discountPrice").text(data.discountPrice);
        $("#stock").text(data.goodsStock);
        countDown();
    }

    /**
     * 获取商品详情页数据
     */
    function getDetail() {
        var goodsId = g_getQueryString("goodsId");
        $.ajax({
            url: "/api/goods/" + goodsId,
            type: "GET",
            success: function (data) {
                if (data.code == 20000) {
                    render(data.data);
                } else {
                    layer.msg(data.message);
                }
            },
            error: function () {
                layer.msg("客户端请求有误");
            }
        });
    }

    function countDown() {
        var remainSeconds = $("#remainSeconds").val();
        var timeout;
        //秒杀还没开始，倒计时
        if (remainSeconds > 0) {
            $("#buyButton").attr("disabled", true);
            $("#secKillTip").html("秒杀倒计时：" + remainSeconds + "秒");
            timeout = setTimeout(function () {
                $("#countDown").text(remainSeconds - 1);
                $("#remainSeconds").val(remainSeconds - 1);
                countDown();
            }, 1000);
            //秒杀进行中
        } else if (remainSeconds == 0) {
            $("#buyButton").attr("disabled", false);
            if (timeout) {
                clearTimeout(timeout);
            }
            $("#secKillTip").html("秒杀进行中");
            $("#verifyCodeImg").attr("src", "/api/user/verifyCode/" + $("#goodsId").val());
            $("#verifyCodeImg").show();
            $("#verifyCode").show();
        } else {//秒杀已经结束
            $("#buyButton").attr("disabled", true);
            $("#secKillTip").html("秒杀已经结束");
            $("#verifyCodeImg").hide();
            $("#verifyCode").hide();
        }
    }

    function refreshVerifyCode() {
        $("#verifyCodeImg").attr("src", "/api/user/verifyCode/" + $("#goodsId").val() + "?timestamp=" + new Date().getTime());
    }


</script>
</html>
